<?php
	class DbCfg {
		const DEBUG = true;

		public static function GetConnection()
		{
			if(DbCfg::DEBUG) return DbCfg::GetDebugConnection();
			$db = new PDO('sqlite:Gridania.db');
			$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			return $db;
		}

		public static function GetDebugConnection()
		{
			$db = new PDO('sqlite::memory:');
			$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

			DbCfg::fillData($db);

			return $db;
		}

		private static function fillData(PDO &$db)
		{
			$db->exec("CREATE TABLE Item(itemId integer primary key, name text unique not null, base boolean not null);");
			$db->exec("CREATE TABLE Recipe(recipeId integer primary key, resultId integer references Item(itemId) not null, itemQuantity integer not null);");
			$db->exec("CREATE TABLE RecipeMaterial(recipeId references Recipe(id), itemId references Item(itemId), quantity integer not null, primary key(recipeId, itemId));");

			$insertItem = $db->prepare("INSERT INTO Item VALUES (:itemid, :name, :base)");
			$insertRecipe = $db->prepare("INSERT INTO Recipe VALUES (:recipeid, :resultid, :quantity)");
			$insertRecipeMaterial = $db->prepare("INSERT INTO RecipeMaterial VALUES (:recipeid, :itemid, :quantity)");

			$insertItem->bindValue(':itemid', 1, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Iron Ore", PDO::PARAM_STR);
			$insertItem->bindValue(':base', true, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 2, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Iron Ingot", PDO::PARAM_STR);
			$insertItem->bindValue(':base', false, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 3, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Iron Plate", PDO::PARAM_STR);
			$insertItem->bindValue(':base', false, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 4, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Rock Salt", PDO::PARAM_STR);
			$insertItem->bindValue(':base', true, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 5, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Distilled Water", PDO::PARAM_STR);
			$insertItem->bindValue(':base', true, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 6, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Table Salt", PDO::PARAM_STR);
			$insertItem->bindValue(':base', false, PDO::PARAM_BOOL);
			$insertItem->execute();
			$insertItem->bindValue(':itemid', 7, PDO::PARAM_INT);
			$insertItem->bindValue(':name', "Salt Cake", PDO::PARAM_STR);
			$insertItem->bindValue(':base', false, PDO::PARAM_BOOL);
			$insertItem->execute();

			$insertRecipe->bindValue(':recipeid', 1, PDO::PARAM_INT);
			$insertRecipe->bindValue(':resultid', 2, PDO::PARAM_INT);
			$insertRecipe->bindValue(':quantity', 1, PDO::PARAM_INT);
			$insertRecipe->execute();
			$insertRecipe->bindValue(':recipeid', 2, PDO::PARAM_INT);
			$insertRecipe->bindValue(':resultid', 3, PDO::PARAM_INT);
			$insertRecipe->bindValue(':quantity', 1, PDO::PARAM_INT);
			$insertRecipe->execute();
			$insertRecipe->bindValue(':recipeid', 3, PDO::PARAM_INT);
			$insertRecipe->bindValue(':resultid', 6, PDO::PARAM_INT);
			$insertRecipe->bindValue(':quantity', 6, PDO::PARAM_INT);
			$insertRecipe->execute();
			$insertRecipe->bindValue(':recipeid', 4, PDO::PARAM_INT);
			$insertRecipe->bindValue(':resultid', 7, PDO::PARAM_INT);
			$insertRecipe->bindValue(':quantity', 1, PDO::PARAM_INT);
			$insertRecipe->execute();

			$insertRecipeMaterial->bindValue(':recipeid', 1, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':itemid', 1, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':quantity', 3, PDO::PARAM_INT);
			$insertRecipeMaterial->execute();
			$insertRecipeMaterial->bindValue(':recipeid', 2, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':itemid', 2, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':quantity', 2, PDO::PARAM_INT);
			$insertRecipeMaterial->execute();
			$insertRecipeMaterial->bindValue(':recipeid', 3, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':itemid', 4, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':quantity', 1, PDO::PARAM_INT);
			$insertRecipeMaterial->execute();
			$insertRecipeMaterial->bindValue(':recipeid', 3, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':itemid', 5, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':quantity', 1, PDO::PARAM_INT);
			$insertRecipeMaterial->execute();
			$insertRecipeMaterial->bindValue(':recipeid', 4, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':itemid', 6, PDO::PARAM_INT);
			$insertRecipeMaterial->bindValue(':quantity', 12, PDO::PARAM_INT);
			$insertRecipeMaterial->execute();
		}
	}
?>
